Non-volatile memory is commonly used in portable or battery operated devices, such as memory cards, flash drives, media players, digital cameras, mobile phones and the like. Flash memory is a type of non-volatile memory that stores information in an array of floating gate transistors called “cells” which can store one or more bits. Each flash memory chip is divided into blocks. A block is an array of memory cells organized into pages or sectors. Each page can include additional bytes for correcting errors in data read from the memory chip (e.g., error correction codes).
In some flash memory systems, a host system performs reads and writes to logical block addresses (LBAs), which are mapped or translated to physical block addresses of flash memory. This mapping makes flash memory look like a disk drive to the host operating system. Although flash memory can be read or programmed a byte or a word at a time in a random access fashion, it is usually erased a block at a time. Starting with a freshly erased block, any byte within that block can be programmed. Once a byte has been programmed, it typically cannot be changed again until the entire block is erased. Since flash memory has a finite number of erase-write cycles it is desirable to minimize the number of erase-write cycles to prolong the life of the flash memory.
Due to the unique characteristics of flash memory described above, there is a need for systems, methods and devices that can efficiently monitor the health of flash memory and other non-volatile memories, while maintaining compatibility with existing standards and protocols.